home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / GAMES / FUNNYMINES / !3DMine / !Help next >
Text File  |  1995-06-16  |  35KB  |  795 lines

  1.                 ___________             _____                  
  2.                 ***********\           /******b.               
  3.                 ***********:\    .    /:********b        )     
  4.          .       '-._···d**::\       /·:***·::"**B             
  5.      †               '-d**P:··\     /·::*** ··:"**b   .        
  6.                       d**P:·:· \   /···:***· ··:***      .     
  7.                      @**(:·:· · \ /  ·::*** ··::***            
  8.      .      †         "**b:··  *****···:***· ··:***            
  9.                        "**b:·· ***** ·::*** ··::***            
  10.                  _..··'"***::··    \···:***· ··:***    †       
  11.          .      **b:·· ·***:.'      \·::*** ··:d**P            
  12.                 ***b:·:d**P·         \·:*** ::d**B             
  13.     †           "********@'     .     \:********P              
  14.              .   "******P              \******P'    .   .      
  15.                     ~~~                 ~~~~~                  
  16.        .       ___                 ___       ___               
  17.               /\__\       ___     /\__\     /\  \              
  18.              /%%|  |     /\  \   /%%|  |   /%%\  \       .     
  19.    .        /%|%|  |     \%\  \ /%|%|  |  /%/\%\  \            
  20.            /%/|%|__|__   /%%\__\%/|%|  |_/%%\~\%\  \           
  21.           /%/ |%%%%\__\ /%/\/__// |%| /\__\\%\ \%\__\          
  22.           \/__/~~/%/  //%/  / \/__|%|/%/  /~\%\ \/__/          
  23.      )          /%/  /%%/__/      |%/%/  /%\ \%\__\            
  24.                /%/  / \%\__\      |%%/  / \%\ \/__/     †      
  25.          .    /%/  /   \/__/  .   /%/  /   \%\__\              
  26.               \/__/               \/__/     \/__/              
  27.    .  ___     ___     ___     ___     ___     ___     ___      
  28.      /\  \   /\__\   /\  \   /\  \   /\  \   /\  \   /\  \     
  29.     /%%\  \ /%/  /  /%%\  \ /%%\  \ /%%\  \ /%%\  \ /%%\  \    
  30.    /%/\%\  \%/  /  /%/\%\  \%/\%\  \%/\%\  \%/\%\  \%/\%\  \   
  31.   _\%\~\%\  \ _<_ /_/\~\%\  \\~\%\  \\~\%\  \\~\%\  \\~\%\  \  
  32.  /\ \%\ \%\__\| |/\__\\ \%\__\\ \%\__\\ \%\__\\ \%\__\\ \%\__\ 
  33.  \%\ \%\ \/__/| /%/  /%\ \/__/%\ \/__/%\/%/  /%\ \/__/%\/%/  / 
  34.   \%\ \%\__\/%|/%/  / \%\__\\ \%\__\  \%%/  / \%\__\|%|%%/  /  
  35.    \%\/%/  /|%/%/  /%\ \/__/%\ \/__/   \/__/%\ \/__/|%|\/__/   
  36.     \%%/  / |%%/  / \%\__\  \%\__\          \%\__\  |%|  |     
  37.      \/__/   \/__/   \/__/   \/__/   .       \/__/   \|__|     
  38.                                                                
  39.  
  40. 3D Minesweeper
  41. ~~ ~~~~~~~~~~~
  42.  Author: A.W.Garrard
  43. Version: 2.03 (14-Dec-94)
  44. Purpose: Brain damage
  45.  
  46. Double-click on !3DMine to play
  47.  
  48. The classic game Minesweeper, now in 3-D
  49. A game for people of all ages who are as bored as I was when I
  50. wrote it
  51.  
  52. ·NO tacky sound effects
  53. ·NO high speed, animated graphics (getting bored of them, yuh?)
  54. ·NO advanced GUI to baffle beginners
  55.  
  56. ·ARE YOU PREPARED FOR THE INTRIGUE of working out why I could be
  57.  bothered to write this thing in the first place?
  58. ·CAN YOU STAND THE TENSION of having people stand behind you,
  59.  shouting "No, not THAT one!"?
  60. ·CAN YOUR HEART TAKE THE STRAIN of the caffeine intake from all
  61.  the coffee you can drink while the screen re-draws?
  62.  
  63. Having said that, you might enjoy it, so give it a go.
  64.  
  65. * Title MINE SWEEPER text style based on a font by Lennert Stock
  66.  
  67. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  68.  
  69. Important note:
  70. Risc PC users with low resolution monitors should pay attention
  71. to the section on customising their monitor definition file.
  72. This game will not work in low resolution on a Risc PC without
  73. this change being made.
  74.  
  75. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  76.  
  77. Game mechanics
  78. ~~~~ ~~~~~~~~~
  79. This program has on-line help, but for people who would rather
  80. read this in their favourite text viewer before use, details
  81. of the game are provided below...
  82.  
  83. Gameplay: it's normal minesweeper, only 3-D.
  84.  
  85. If that doesn't help, here is a brief synopsis of minesweeper:
  86.  
  87. Minesweeper is a game which is played on a grid of cells. Each
  88. cell may or may not contain a mine. To start with, you do not
  89. know the contents of the cells.
  90.  
  91. The aim of the game is to flag all the cells which contain
  92. mines. If you think a cell does not contain a mine, you can
  93. uncover it. If you uncover a cell which contains a mine, you
  94. lose the game. If the cell which is uncovered is safe, it will
  95. change to show you how many cells adjacent to it (including
  96. diagonals) contain mines. You cannot clear a cell which has
  97. been flagged or queried.
  98.  
  99. If you change your mind about whether a flagged cell contains a
  100. mine, you can un-flag it again. You only have as many flags as
  101. there are mines, and the game finishes when you have no flags
  102. left. If you have all the mines flagged at this point, you win,
  103. otherwise (i.e. you have a flag wrongly placed) you lose.
  104.  
  105. You can also place a query on a cell. You cannot flag a cell
  106. which has been queried, or query a cell which has been flagged.
  107. The only purpose of a queried cell is to help you calculate
  108. whether other cells may contain mines in a complex arrangement-
  109. queried cells show up amber, and have no other effect on the
  110. game. Cells can be un-queried when you have done with them, and
  111. you may query as many cells as you like.
  112.  
  113. Cells which are not yet uncovered are shown in blue
  114. Cells which are queried are shown in amber
  115. Cells which are flagged are shown in red
  116. Cells which have been uncovered are shown as follows:
  117.   No adjacent mine - cell not plotted (invisible)
  118.   Adjacent mines - cell plotted in black with red outline and
  119.   with a letter in red indicating number of mines: A=1, B=2 etc.
  120.  
  121. There are readouts on the main screen showing the coordinates
  122. of the cell currently displayed under the mouse pointer, the
  123. number of mines around this cell, and the number of flags
  124. which the player has left.
  125.  
  126. The three-dimensional game grid may be rotated at will. Because
  127. the grid is 3-D, it is possible for some cells to be completely
  128. obscured by others. To remedy this, it is possible to request
  129. that only a portion of the grid be displayed by specifying a
  130. range of coordinates to be displayed. The help screen indicates
  131. the current numerical values of this range, and the grid box
  132. shown on the help screen encloses only the current range, thus
  133. providing a more graphical indication. The limits may be varied
  134. by use of the keyboard, with keys increasing or decreasing the
  135. upper and lower limits of the range along each axis. The whole
  136. grid is always displayed at the start of a game.
  137.  
  138. The game uses quite a large amount of memory, and, especially
  139. for large grids, re-draw may take a few seconds (an hourglass
  140. percentage is displayed indicating progress). The grid will
  141. update faster if there are less cells to display - to increase
  142. speed, uncover cells as soon as you can (empty cells draw faster
  143. than unknown ones) and use QwErTy (or equivalents) to reduce the
  144. size of the displayed grid. Use of the help screen is also
  145. recommended to speed up rotations and resizing.
  146.  
  147. When the player uncovers a cell which is not adjacent to any
  148. mines, the program will clear the grid out from that cell until
  149. the boundaries of all uncovered regions are again adjacent to
  150. mines. (This saves time, and would be trivial to do yourself,
  151. since all the cells around such a cell are by definition safe).
  152.  
  153. When starting, the player is asked for a grid size and no. of
  154. mines. The number of mines cannot exceed the number of cells
  155. in the grid, excluding corner points (no mine will be placed
  156. in a corner cell).
  157.  
  158. The x coordinate of the grid size must be a multiple of 8 (for
  159. storage reasons).
  160.  
  161. It is recommended that the game is first played on an 8x5x5 grid
  162. with 5-10 mines until you are familiar with the controls.
  163.  
  164.  
  165.  
  166. Mouse buttons function as follows:
  167.  
  168.             _____________________________ 
  169.            |         |                   |
  170.            | Flag/   |                   |
  171.            | unflag  |                   |
  172.            |_________|                   |
  173.            |         |                   |
  174. ———————————| Query/  |                   |
  175. ———————————| unquery |                   |
  176.            |_________|                   |
  177.            |         |                   |
  178.            | Uncover |                   |
  179.            | cell    |                   |
  180.            |_________|___________________|
  181.  
  182.  
  183.  
  184. Select - uncover cell
  185.   Menu - query cell (for user calculation purposes)/unquery it
  186. Adjust - flag/unflag cell
  187.  
  188. In addition, there the following short-cuts are available:
  189.  
  190. Shift+Select on a lettered cell which has as many flags next to
  191.   it as it has mines clears all remaining cells around the cell
  192. Shift+Adjust on a lettered cell which has as many blank cells
  193.   next to it as there are mines left to be flagged around it
  194.   flags all remaining blank cells around the cell
  195.  
  196. These short-cuts are best understood by experiment.
  197.  
  198.  
  199. Default keys function as follows:
  200.  
  201. q moves the x coord lower bound down
  202. Q moves the x coord lower bound up
  203. w moves the x coord upper bound down
  204. W moves the x coord upper bound up
  205. e moves the y coord lower bound down
  206. E moves the y coord lower bound up
  207. r moves the y coord upper bound down
  208. R moves the y coord upper bound up
  209. t moves the z coord lower bound down
  210. T moves the z coord lower bound up
  211. y moves the z coord upper bound down
  212. Y moves the z coord upper bound up
  213.  
  214. z rotates the grid to the left slowly (about the y axis)
  215. Z rotates the grid to the left quickly
  216. x rotates the grid to the right slowly
  217. X rotates the grid to the right quickly
  218. ' rotates the grid up slowly (about the x axis)
  219. " (@ on a Risc PC) rotates the grid up quickly
  220. / rotates the grid down slowly
  221. ? rotates the grid down quickly
  222. o rotates the grid to the left slowly (about the z axis)
  223. O rotates the grid to the left quickly
  224. p rotates the grid to the right slowly
  225. P rotates the grid to the right quickly
  226.  
  227. The above keys may be redefined, and the settings saved, but
  228. saved settings must be explicitly loaded since the program
  229. will default to the above settings each time it is run.
  230.  
  231. <space> swaps between the main and help screens
  232. <Esc> restarts and <Ctrl>+<Esc> exits the game
  233.  
  234. The current keys are displayed on the help screen.
  235.  
  236. The disc from which the game was loaded must be left in the
  237. drive while playing - it will be accessed at the start of each
  238. new game. This is not an attempt at anti-piracy, merely a
  239. consequence of the way the program works; a large enough ADFS
  240. buffer will suffice instead, or the game may be run from a
  241. ram disc.
  242.  
  243. Files are provided in the !3DMine directory to support The
  244. Serial Port joystick interface. Please read the LeadEdSrc source
  245. file to see how to use joysticks with the game. To open the
  246. !3DMine directory and get access to these files, hold down
  247. <Shift> and double-click on the !3DMine application. Once the
  248. joystick file has been loaded, the game should be run as normal.
  249. The Vertical Twist joystick interface does not work (at time of
  250. writing) on the Risc PC - this is nothing to do with !3DMine,
  251. and the author will be pleased to hear from anyone who has got
  252. the joystick interface to work on the new machine.
  253.  
  254. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  255.  
  256. Machine requirements:
  257. ~~~~~~~ ~~~~~~~~~~~~
  258. The program should run on any 32-bit Acorn machine with RISC OS
  259. (although RISC OS 3's ColourTrans will make use of dithering).
  260. I have not been able to test the program on any OS versions
  261. except 3.5, 3.11 and 2.00 (low resolution only), or on any
  262. machines with less than 4Mb, but can't see any reason why it
  263. shouldn't work on any others. The latest version has only been
  264. tested on a RISC OS 3.5 machine, but no changes have been made
  265. which should compromise functionality on earlier computers.
  266.  
  267. Although memory usage improved radically in version 1.14, the
  268. high resolution version of the game still requires a 2Mb machine
  269. (although it will fit in one far more comfortably than previous
  270. versions). The low resolution version will run on a 1Mb RISC-OS2
  271. machine, but modules may need to be unplugged to get it to run
  272. on a 1Mb RISC-OS3 machine. The program will not run on an A305
  273. which has not been expanded. For similar reasons, effort has not
  274. been expended to get the program to work on Arthur, especially
  275. since Arthur can't display the right screen mode. Due to the
  276. speed (or lack of it) at which the program runs, an ARM3 (or
  277. later) is recommended, but then one always is. There have been a
  278. lot of code optimisations made in the hope that one is not
  279. required but is a luxury.
  280.  
  281. In high resolution mode, the program runs in mode 27 (640x480,
  282. 16 colour VGA) and so should work on VGA, SVGA and MultiSync
  283. monitors, and on the A4's LCD display - although on the latter
  284. (and other monochrome displays), colours will obviously be
  285. harder to distinguish between, especially since I did not have
  286. an A4 available when palette choosing. Owners of such machines
  287. may have to resort to the read-out at the top of the screen to
  288. tell them what is under the mouse pointer; anybody who can
  289. provide a suitable alternative palette with more contrast on the
  290. A4, but still provides intuitive colours on a colour display,
  291. please let me know and I will include it in the next update.
  292.  
  293. Although the game may be played in 'low resolution mode', the
  294. display quality suffers significantly. The low resolution option
  295. was only written for compatibility, since it allows the !3DMine
  296. to be run on a 1Mb machine (just) as well as just on a normal
  297. monitor. The game is playable in this state, but the high-
  298. resolution version is recommended where available (the layout of
  299. the user interface is better and the cells are much clearer and
  300. less lumpy). Mode 27 was chosen as the next most 'standard'
  301. resolution which most monitor types can display (but 'normal' &
  302. high-res mono monitors can't). The low resolution option runs
  303. in a custom mode 112, which is mode 12 but with the resolution
  304. tweaked to 640x240.
  305.  
  306. If the program is run on a machine with a low resolution monitor
  307. or if insufficient memory is available to run in high resolution
  308. mode then the program will automatically run in low resolution
  309. mode. It is possible to force the game into low resolution mode
  310. by holding down <Return> when the program is run. The low-res
  311. version of the game does have slightly faster update, so if the
  312. user is willing to forfeit display quality in return for this
  313. speed increase, this facility may be useful (although personally
  314. I wouldn't think it was worth it).
  315.  
  316. On a hi-res mono monitor (type 2), the program will probably
  317. attempt to run in a different mode to the one it thinks it is
  318. running in, and therefore even if it doesn't crash it will not
  319. be playable. C'est la vie.
  320.  
  321. The program could have been written to allow various screen
  322. modes, and even to run in the desktop. The reasons it wasn't,
  323. in increasing order of importance, are:
  324. a) It would slow it down and require even more memory.
  325. b) It would stop me using shadow screens etc. which would mean
  326.    more complex coding.
  327. c) I couldn't be bothered (I have a degree to do too, you know).
  328.  
  329.  
  330. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  331.  
  332. Risc PC screen modes and customising monitor definition files:
  333. ~~~~ ~~ ~~~~~~ ~~~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~ ~~~~~
  334.  
  335. On a Risc PC, the game attempts to run in 640x480, 16 colours.
  336. If there is insufficient memory for this, if this mode is not
  337. defined in the monitor definition file currently in use (e.g.
  338. the machine is in use on a low-resolution monitor), or if the
  339. <Return> key is pressed when the program is run, the game will
  340. try to use a 640x240 16 colour mode. This section provides
  341. information on that mode - if you never intend to run the game
  342. in low-resolution mode, you can ignore the rest of this section.
  343.  
  344. If you use an AKF50, AKF52, AKF60 or AKF85 monitor definition
  345. file, modified versions providing definitions for the customised
  346. 640x240 low resolution mode which !3DMine uses are provided in
  347. the !3DMine.3DMMDF directory distributed with this game; shift-
  348. double-click on the !3DMine application to open its directory.
  349. To install these definition files, copy this directory into the
  350. $.!Boot.Resources.Configure.Monitors on your hard disc (shift-
  351. double-click on the !Boot application to open it, then double-
  352. click on the other directories to open them). Then double click
  353. on !Boot to configure the new MDFs. Click on the screen icon in
  354. the configuration window, then, from the menu to the right of
  355. 'Monitor type' in the Screen window, choose the appropriate MDF
  356. out of 'AKF50 3DM', 'AKF52 3DM', 'AKF60 3DM' & 'AKF85 3DM'. Then
  357. click on 'Set' in the Screen window. Your computer should now be
  358. correctly set up so that !3DMine can use its custom modes. If at
  359. any point you change which monitor definition file you use,
  360. remember to change back to this one before running !3DMine in
  361. low-resolution mode. If you can use the provided definition
  362. files, you can afford to ignore the rest of this section.
  363.  
  364. If you have a different type of monitor, you may have to make
  365. some changes to the definition file you do use, because of the
  366. non-standard 640x240 mode which the game uses.
  367.  
  368. This 640x240 mode is unlikely to be defined as default in your
  369. monitor definition file. Hence, if you wish to use !3DMine in
  370. low resolution mode, you must make some changes to your MDF. To
  371. do this, look in the $.!Boot.Resources.Configure.Monitors folder
  372. on your hard disc - shift-double-click on the !Boot application
  373. to open it, and double-click on the other directories to open
  374. them. In it are a number of directories containing monitor
  375. definition files, which are simply text files which tell the
  376. computer what signals to send the monitor. You need to find the
  377. file which contains the monitor definition which you use - for
  378. example, if you are using the standard AKF60 monitor then the
  379. monitor definition file which you use may be called 'AKF60' in
  380. the Acorn directory. When you have found this file, load it
  381. into a text editor (e.g. !Edit). If you have the correct file,
  382. it should contain the following section near the top, possibly
  383. after some lines beginning with # characters:
  384.  
  385. file_format:1
  386. monitor_title:nnnnnnnn
  387.  
  388. Where nnnnnnnn is the name of your monitor, which appears in the
  389. title of the mode selector window. Change the nnnnnnnn to give
  390. some indication that this file has been modified for !3DMine -
  391. for example, 'Acorn AKF60' could be called 'Acorn AKF60 3DM'.
  392. Then go down through the file until you find the line:
  393.  
  394. # 640 x 250
  395.  
  396. or:
  397.  
  398. # 640 x 256
  399.  
  400. (preferably the former). There may be another comment after the
  401. numbers. Copy the section between this line and the line which
  402. reads 'endmode' (inclusive) to the end of the file and change
  403. the 250 or 256 to read 240. Next you need to change the line
  404. which reads:
  405.  
  406. y_res:n
  407.  
  408. (where n is 250 or 256 depending on which definition you have
  409. copied) to read:
  410.  
  411. y_res:240
  412.  
  413. Finally you need to look at the v_timings line. It will contain
  414. something of the format:
  415.  
  416. v_timings:s,bp,tb,scr,bb,fp
  417.  
  418. where s,bp,tb,scr,bb and fp are numbers telling the computer
  419. how many scan lines make up the sync, back porch, top border,
  420. screen, bottom border and front porch respectively. You do not
  421. need to know the details of how these work.
  422.  
  423. The scr value needs to be changed to read 240, but in order to
  424. ensure that the mode still works, you will need to increase the
  425. bottom and top borders so that the total number of scan lines
  426. stays the same. To do this, if 'scr' was originally 250, add
  427. 5 to tb and bb (to evenly distribute the extra 10 lines between
  428. the two borders and keep the screen centred). If 'scr' was 256,
  429. add 8 to tb and bb.
  430.  
  431. As an example, taking the standard AKF60 definition file, the
  432. copied section originally read:
  433.  
  434. # 640 x 250 (70Hz - Modes 3,11,14)
  435. # Low band
  436. startmode
  437. mode_name:
  438. x_res:640
  439. y_res:250
  440. pixel_rate:25175
  441. h_timings:88,22,22,640,22,6
  442. v_timings:2,109,0,250,0,88
  443. sync_pol:2
  444. endmode
  445.  
  446. and should be changed to
  447.  
  448. # 640 x 240 (70Hz - Modes 3,11,14)     <- 250 changed to 240
  449. # Low band
  450. startmode
  451. mode_name:                             <- this is blank
  452. x_res:640
  453. y_res:240                              <- 250 changed to 240
  454. pixel_rate:25175
  455. h_timings:88,22,22,640,22,6
  456. v_timings:2,109,5,240,5,88             <- borders 5, screen 240
  457. sync_pol:2
  458. endmode
  459.  
  460. If there is anything following the ':' on the mode_name line,
  461. the extra should be removed.
  462.  
  463. There is nothing special about the 640x256 and 640x250 mode
  464. definitions - you can base your new mode on any original mode,
  465. but since these are standard modes which are likely to exist and
  466. be correctly adjusted for your monitor, these are the suggested
  467. sizes to use. Note that the borders cannot be negative, so the
  468. original mode must be at least 240 pixels vertically. You do not
  469. have to start with a mode which is 640 pixels horizontally, but
  470. you must pad out the corresponding borders and make the other
  471. changes needed to alter the screen width, so unless you know
  472. what you are doing, this is not recommended.
  473.  
  474. When you have finished making your changes, save the monitor
  475. definition file under a new name (so that it does not write over
  476. the old one, in case there is a problem). You will then have to
  477. run the !Boot application to get the configuration options. When
  478. you have done this, click on 'Screen' and from the menu to the
  479. right of 'Monitor type', choose the monitor definition file
  480. which you have created. Click on 'Set' in the Screen window, and
  481. the computer will know about the screen mode which it needs for
  482. !3DMine.
  483.  
  484. If there is a problem with the new definition file, one of three
  485. things will happen. Firstly, the configure application may
  486. complain when it tries to scan for new monitor definition files
  487. (and the new definition will not appear in the menu). Secondly,
  488. !3DMine may not be able to find the screen mode it needs, and
  489. will refer you back to this document. Finally, the mode may be
  490. defined but your monitor will not be able to display it, and
  491. instead produce a distorted picture or power-down. Press <Ctrl>+
  492. <Esc> twice and then <Space> to quit !3DMine and return to the
  493. desktop in this last case. Check the definition file again -
  494. there should not be a circumstance under which these changes
  495. will not work. For more details on changing monitor definition
  496. files, you are referred to my article in the October '94 edition
  497. of Archive magazine on 'Creating Monitor Definition Files'.
  498.  
  499.  
  500. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  501.  
  502. Revision history:
  503. ~~~~~~~~ ~~~~~~~
  504. Conceived Feb 18th 1994 (may have been 17th)
  505.  
  506. Version 1.00 Feb 19th
  507. ·complete in BASIC, but no auto-clear
  508.  
  509. Version 1.01 Feb 21st
  510. ·auto-clear about cells non-adjacent to a mine added
  511. ·final print-out of maze added
  512.  
  513. Version 1.02 Feb 21st
  514. ·m/c 'z-buffer' implemented to replace BASIC - much faster
  515. ·auto-clear amended (now does diagonals, as original)
  516.  
  517. Version 1.03 Feb 21st
  518. ·added rotation about z axis (on request) -
  519.  may need guide for rotation to be added later (see 1.06)
  520.  
  521. Version 1.04 Feb 22nd
  522. ·minor bug fix -
  523.  now detects #surrounding mines correctly for larger mazes
  524.  
  525. Version 1.05 Feb 23rd
  526. ·minor alteration - now all rotations are relative to screen
  527.  axes rather than those of the original grid
  528.  
  529. Version 1.06 Feb 25th-26th
  530. ·help screen added - also provides faster interaction
  531. ·auto-clear algorithm changed (now slower, but handles 16x16x16)
  532. ·crude timing added
  533.  
  534. Version 1.07 Feb 27th
  535. ·auto-clear improved - quite a lot faster, but still slower
  536.  than original
  537. ·timing now ignored redraw time
  538. ·restart option provided
  539.  
  540. Version 1.08 March 1st
  541. ·fancy graphics on win/lose and startup provided
  542.  
  543. Version 1.09 March 2nd
  544. ·help screen at start added, graphics improved (slightly)
  545.  
  546. Version 1.10 March 2nd
  547. ·help screen at start updated; bug on return fixed
  548. ·<Esc> during game now returns to start screen (quits on start)
  549. ·grey shading of uncovered cells removed, since it wasn't really
  550.  noticeable and was only slowing the program down
  551. ·indication of reason for re-draw added
  552.  (mainly to avoid confusion over Caps Lock)
  553.  
  554. Version 1.11 March 3rd
  555. ·depth cueing on final maze printout added
  556. ·facility to see main maze display from final printout added
  557.  
  558. Version 1.12 March 12th
  559. ·VDU 24 and range clipping on drawn cells after single cell
  560.  update (drastic update speed improvement)
  561. ·final screen key done
  562. ·first release version
  563.  
  564. Version 1.13 March 18th
  565.  mostly bug fixes from version 1.12 (which was rushed):
  566. ·fixed bug on clipping (now clears rectangle in z-buffer - this
  567.  only matters where a single cell which is not adjacent to any
  568.  mines is cleared and nothing else is plotted over where it was;
  569.  but it might have caused a crash *BLUSH* - and in a released
  570.  version too!)
  571. ·clearing for text improved (doesn't leave spare text on screen)
  572. ·now notes cells which are transparent, so it's not necessary to
  573.  count surrounding mines for uncovered cells on every redraw -
  574.  another significant speed increase on redraw, when the grid has
  575.  been partially or mostly cleared
  576.  
  577. Version 1.14 March 29th
  578.  lots of improvements the day after a HENSA upload - NOT clever
  579. ·code for writing to z-buffer greatly improved -
  580.  now more convoluted, but faster (removed lots of MULs)
  581. ·z-buffer is now 16-bits deep, not 32 (not much point having 32
  582.  bit buffer when you can only have 4097 values in it) - could
  583.  be 13 bits (not 12 :-( ) or 12+1, but would require far more
  584.  coding; probably still wouldn't fit on 1Mb machine (comes just
  585.  short of a meg with screen memory, but you need the OS) so I
  586.  won't bother - I've just saved 600k, after all
  587. ·final grid display altered to show more specifics
  588. ·tested with !VDUTask (works, surprisingly, but not very stable)
  589.  
  590. Version 1.15 March 31st
  591. ·grid representation changed (now memory block, not int. array)
  592.  - facilitates future m/coding (e.g. clearing code)
  593. ·grid clearing code now in assembler - MUCH faster, even if a
  594.  bit badly coded (delay now < 1 sec vs 45 secs for 16x16x16 in
  595.  version 1.14, on a 25MHz A5000; redraw still 30 secs tho'.)-: )
  596. ·slight improvement to help screen GUI
  597. ·<ESC> while exploding now quits (<ESC><ESC> is fast exit)
  598.  
  599. Version 1.15LR March 31st
  600. ·as version 1.15, but runs on 'normal' monitors in custom mode
  601. ·selector program automatically chooses between 1.15 and 1.15LR
  602.  (based on monitor type)
  603.  
  604. Version 1.16 April 6th
  605. ·combines 1.15 and 1.15LR into one program to allow for easier
  606.  update (so I don't have to change two programs each time)
  607. ·matrices for position calculation are now integer, using fixed-
  608.  point, in preparation for more heavily ARM-coded releases -
  609.  N.B. initial loss of accuracy, but 15 binary places seems to be
  610.  enough (10 isn't); could go back and only convert to fixed-
  611.  point at final stage, if necessary
  612.  
  613. Version 2.00 April 14th
  614. ·now uses floating point for the position calculation again, but
  615.  converts to integer for plotting (retains accuracy, but allows
  616.  use of machine-code routines)
  617. ·plotting routines are now machine-coded - significant speed up
  618. ·cells now plotted with sprites, not circles - a bit faster
  619. ·keys now user-definable (with, unfortunately, a bit of naughty
  620.  code to retain settings)
  621. ·short-cuts (shift-adjust and shift-select on lettered cells)
  622.  added, having found a RISC-OS version of Minesweeper which has
  623.  this facility
  624. ·program no longer needs MemAlloc, and assigns itself suitable
  625.  amounts of memory if it can (not quite perfectly, and there are
  626.  better ways of doing it, but I only have Arthur PRMs so I claim
  627.  ignorance)
  628. ·the program will now generate a new copy of the custom screen
  629.  mode module if it needs one and can't find it, although it does
  630.  still need to save it in the same directory as the program
  631. ·!RunImage is now self-contained, and the !Run file now does
  632.  nothing significant
  633. ·<Esc> now always returns to the start of the program; quit has
  634.  been changed to <Ctrl>+<Esc> (twice to quit quickly)
  635. ·joystick files provided (only keyboard equivalents)
  636.  
  637. Version 2.01 April 19th
  638. ·bug fix (I'd accidentally typed : not + on range setting)
  639. ·bug fix - can now have true maximum number of mines for a grid
  640. ·hourglass added to mine filling routine (can be slow)
  641.  
  642. Version 2.02 December 3rd
  643. ·now uses @ instead of " on Risc PCs (to compensate for changed
  644.  keyboard layout) as default
  645. ·handles correct modes (low resolution and custom 640x480) on
  646.  Risc PCs
  647. ·help on creating appropriate Risc PC monitor definition files
  648.  and sample files for default distribution MDFs provided
  649. ·found out how to do proper memory allocation - but since the
  650.  existing code works, it hasn't been changed
  651.  
  652. ·Help file updated December 13th - now has prettier title and
  653.  mouse button diagram; also changed my address to home (since
  654.  I won't be at college next year)
  655.  
  656. Version 2.03 December 14th
  657. ·Help file updated to include stereogram and ACTUALLY TELL YOU
  658.  HOW TO PLAY MINESWEEPER (bit of an omission that)
  659. ·!3DMine application sprite improved
  660. ·Now doesn't change from 640x480 <n>Hz to mode 27 on a Risc PC -
  661.  hence the monitor doesn't re-sync every time the game is re-
  662.  started; also changed mode handling on errors to go into the
  663.  current mode (which will always be okay) instead of 27 or 0
  664.  
  665. ·Help file updated December 15th to correct typos and improve
  666.  the clarity of the instructions for changing MDFs
  667.  
  668. ·Help file updated January 10th 1995 to correct and improve
  669.  stereogram and provide instructions for people without editors;
  670.  application sprite also improved again - happy new year!
  671.  
  672. ·Help file updated January 28th - whoops, got the stereogram
  673.  backwards (don't believe I didn't notice)!
  674.  
  675. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  676.  
  677. Boring bit
  678. ~~~~~~ ~~~
  679. As the author of this program, I have legal say in what you may
  680. do with it. As such, I don't really mind what you do to it for
  681. your own use. However, should it be passed on to anyone I would
  682. ask that it be passed on in its original form, with all the
  683. original files (at least this !Help file, the !Run file, the
  684. !Sprites file, the LeadEdSrc and SerPort/JS joystick files, the
  685. monitor defition files in the 3DMMDF directory - AKF50 3DM,
  686. AKF52 3DM, AKF60 3DM and AKF85 3DM - and the !RunImage itself)
  687. present and unchanged. If you wish to let an improvement be
  688. distributed, please mail me with the suggested changes so that
  689. they can be officially implemented in the next version, since I
  690. would like the program to maintain some standard form when it
  691. first reaches people.
  692.  
  693. You may distribute this program as you wish, with the constraint
  694. that it may not be distributed for money other than the price of
  695. the medium on which it is supplied; this game is public domain
  696. and I do not give permission for it to be sold.
  697.  
  698. I take no responsibility for any damage caused by this software
  699. or addiction (unlikely) to it. The program was virus-free when
  700. it left me; I am not responsible for its state when you received
  701. it.
  702.  
  703. This program is NOT shareware. It IS free software. However, if
  704. anybody wishes to send some money to the author (who is an
  705. impoverished student) because they enjoyed the game so much,
  706. then it will be gratefully accepted. I will willingly provide a
  707. copy of the most recent version to anyone who requests it, so
  708. long as my costs are covered. Having said that, I have no plans
  709. for a later version than this, except for debugging.
  710.  
  711. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  712.  
  713. Anybody being critical of my programming: yes I know the way I
  714. plot the grid is a little slow, but it is not worth optimizing
  715. it properly (eg by writing custom circle drawing routines & by
  716. writing direct to the z-buffer, rather than using a sprite for
  717. each cell and using a shadow screen mask in the buffer-writing
  718. routine). Look on the bright side: until I wrote version 1.16,
  719. I was using CIRCLE and CIRCLEFILL instead of sprite plots. The
  720. buffer is there so that calculation of which cell is under the
  721. pointer is responsive enough, since real-time techniques which
  722. don't use buffers would require much more processing power, or
  723. at best could be inaccurate without a considerable increase in
  724. the complexity of the code. This would probably be more effort
  725. than it is worth, at least as far as I am concerned.
  726.  
  727. To purists: my 'z-buffer' isn't actually a z-buffer, but it is
  728. used in a related way, so it seemed like a suitable name.
  729.  
  730. Apologies for any characters which appear incorrectly on early
  731. machines when reading this help file; I'm afraid you will have
  732. to upgrade to get the full effect. :-)
  733.  
  734. Please report any bugs or suggestions which wouldn't take long
  735. to implement (I don't have much time on my hands just now) to:
  736.  
  737. Andrew Garrard
  738. 25 Millfield
  739. Eye, Suffolk
  740. IP23 7DE
  741.  
  742. or, preferably, AWG1000@phx.cam.ac.uk or AWG1000@cus.cam.ac.uk
  743. if it's before the end of June 1995.
  744.  
  745. I dedicate this program to my best friend and fiancée, Stephanie
  746. Keele. It was her addiction to !Mine which started me on this
  747. project, and I am very thankful that she withstood me being
  748. antisocial by programming at her. I am also grateful for the
  749. suggestions she has given on the user interface, and assistance
  750. she provided with debugging, and for her being so generally
  751. wonderful. It's just a pity that she still prefers !Mine to
  752. !3DMine. (*SIGH*) :-(
  753.                                                                
  754.                                                                
  755.                                                                
  756.                                                                
  757.                                                                
  758.                                                                
  759.                 .  .         , .  ,        .  . .              
  760.            '·.··'··.'      \.··'··./      '.··'··.·'           
  761.             :   ` ’ :      :  '  ’ :      : '  '  :            
  762.           -:     •   :-  -:    •    :-  -:   •     :-          
  763.             :      .:      :     . :      :    .  :            
  764.            .··.: ..·.      /·.: ..·\      ,·:. ..··.           
  765.                ':            ' :           '  :                
  766.                                                                
  767.                                                                
  768.                                                                
  769.                                                                
  770.                                                                
  771.           Gratuitous stereogram - supposedly of mines          
  772.  
  773. Too see this stereogram, place your nose close to your screen
  774. and try to look at the left hand mine with your left eye, and
  775. the centre mine with your right eye (or the centre and right
  776. hand mines, respectively). Try to get the circular outlines
  777. of the mines to overlap by pulling your head back slowly. If
  778. you can do this, you should get the illusion that the •
  779. characters stick out of the mines towards you as spikes, as
  780. will other 'points' - there are also some 'points' sticking
  781. away from you. Apparently about 50% of people can see this kind
  782. of illusion, so if it doesn't work for you, sorry. Well, it's
  783. not like you paid for it or anything. :-)
  784.  
  785. If this scrolled by too fast to read, hold down <Ctrl> to
  786. slow down scrolling and <Ctrl>+<Shift> to stop the text.
  787. Alternatively and preferably, load the file into an editor
  788. (e.g. !Edit in the RISCOS 3 Apps folder or on the RISCOS 2
  789. applications discs, or !Zap - in the public domain).
  790. If you do not have an editor available, try this:
  791. Make sure the filer window containing !3DMine is open.
  792. Press F12 to get a command line prompt and type:
  793. TYPE <directory>.!3DMine.!Help
  794. where <directory> is the text in that window's title bar.
  795. When you have read the text, press <Return> to finish.